﻿using System;
using System.Collections.Generic;
using QFramework.Example;
using UnityEngine;

namespace QFramework
{
    public class UISlotGroup:MonoBehaviour
    {
        public enum UISlotGenerateType
        {
            GenerateByTemplate,// 使用模板动态生成
            UseExistUISlot // 使用已经存在的UISlot生成
        }
        
        public string GroupKey;

        [DisplayLabel("UISlot 生成类型")]
        public UISlotGenerateType Type;
        
        // 下面的特性代表是当Type为GenerateByTemplate时，才显示
        [DisplayIf(nameof(Type),false,UISlotGenerateType.GenerateByTemplate)]
        public UISlot UISlotTemplate;
        [DisplayIf(nameof(Type),false,UISlotGenerateType.GenerateByTemplate)]
        public RectTransform UISlotRoot;

        [DisplayIf(nameof(Type), false, UISlotGenerateType.UseExistUISlot)]
        public List<UISlot> UISlots;

        private void Start()
        {
            Refresh();
        }

        // 刷新格子分组，一般就是刷新数据，比如有多个宝箱时，打开不同的宝箱就需要用该方法刷新
        public void RefreshWithGroupKey(string groupKey)
        {
            GroupKey = groupKey;
            Refresh();
        }
        
        public void Refresh()
        {
            if (Type==UISlotGenerateType.GenerateByTemplate)
            {
                UISlotTemplate.Hide();
                // 在重新创建前，要先把已有的格子都删掉，不然就重复创建了
                //UISlotRoot.DestroyChildren();
                // 删除所有带有uislot的子物体
                UISlotRoot.DestroyChildrenWithCondition(child => child.GetComponent<UISlot>());
			
                foreach (var slot in ItemKit.GetSlotGroupByKey(GroupKey).Slots)
                {
                    UISlotTemplate.InstantiateWithParent(UISlotRoot)
                        .InitWithData(slot)
                        .Show();
                }
            }else if (Type == UISlotGenerateType.UseExistUISlot)
            {
                // 遍历所有格子，刷新数据
                for (int i = 0; i < UISlots.Count; i++)
                {
                    UISlots[i].InitWithData(ItemKit.GetSlotGroupByKey(GroupKey).Slots[i]);
                }
            }
        }
    }
}